package com.cms.recursoshumanos.json.object;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.cms.recursoshumanos.cache.ListaArticuloCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.object.Articulo;
import com.cms.recursoshumanos.object.Disponibilidad_Articulo;
import com.cms.recursoshumanos.object.TipoArticulo;
import com.cms.recursoshumanos.object.list.ListaArticulo;

public class JsonObjectGetArticulosCatalogo 
{

	public static JsonObjectGetArticulosCatalogo _instance = null;
	public static JsonObjectGetArticulosCatalogo getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetArticulosCatalogo();
		
		return _instance;
	}
	public String Result;
	private static final String 
		GETLISTAARTICULOSCATALOGO = "GETLISTAARTICULOCATALOGO",
		GETLISTAARTICULOSCATALOGO_STATUS = "STATUS",
		GETLISTAARTICULOSCATALOGO_DATA = "DATA",
		GETLISTAARTICULOSCATALOGO_DATOS_ARTICULO = "DATOS_ARTICULO",
		
		GETLISTAARTICULOSCATALOGO_ARTICULO_ID = "articulo_id",
		GETLISTAARTICULOSCATALOGO_NOMBRE_ARTICULO = "nombre_articulo",
		GETLISTAARTICULOSCATALOGO_CODIGO_ARTICULO = "codigo_articulo",
		GETLISTAARTICULOSCATALOGO_DESCRIPCION_ARTICULO = "descripcion_articulo",
		GETLISTAARTICULOSCATALOGO_FOTO_ARTICULO = "foto_articulo",
		GETLISTAARTICULOSCATALOGO_PRECIO_UNITARIO_ARTICULO = "precio_unitario",
		GETLISTAARTICULOSCATALOGO_CANTIDAD_DISPONIBLE = "cantidad_disponible",
		
		GETLISTAARTICULOSCATALOGO_TIPO_ARTICULO_ID = "tipo_articulo_id",
		GETLISTAARTICULOSCATALOGO_NOMBRE_TIPO_ARTICULO = "nombre_tipo_articulo",
		
		GETLISTAARTICULOSCATALOGO_DISPONIBILIDAD_ID = "disponibilidad_id",
		GETLISTAARTICULOSCATALOGO_NOMBRE_DISPONIBILIDAD = "nombre_disponibilidad";
	

	
	
	
	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
					
					JSONObject getListaArticulo = jsonObject.getJSONArray(GETLISTAARTICULOSCATALOGO).getJSONObject(0);
					String status = getListaArticulo.getString(GETLISTAARTICULOSCATALOGO_STATUS);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
		
						JSONArray data = getListaArticulo.getJSONArray(GETLISTAARTICULOSCATALOGO_DATA);
						JSONObject objeto_data = data.getJSONObject(0);
						JSONArray datos_articulo = objeto_data.getJSONArray(GETLISTAARTICULOSCATALOGO_DATOS_ARTICULO);
						
						//ListaArticuloCache.getInstance().getListaArticulo().resetListaArticulo();
						ListaArticulo listado = new ListaArticulo();
						
						for (int i = 0; i < datos_articulo.length(); i++ )
						{
								
								JSONObject json_articulo = datos_articulo.getJSONObject(i);
								
								listado.addArticulo(new Articulo(
														Integer.parseInt(json_articulo.getString(GETLISTAARTICULOSCATALOGO_ARTICULO_ID)), 
														json_articulo.getString(GETLISTAARTICULOSCATALOGO_NOMBRE_ARTICULO), 
														json_articulo.getString(GETLISTAARTICULOSCATALOGO_CODIGO_ARTICULO), 
														(json_articulo.getString(GETLISTAARTICULOSCATALOGO_DESCRIPCION_ARTICULO).equals("null") ?
																null:
																	json_articulo.getString(GETLISTAARTICULOSCATALOGO_DESCRIPCION_ARTICULO)), 
														 
														Float.parseFloat(json_articulo.getString(GETLISTAARTICULOSCATALOGO_PRECIO_UNITARIO_ARTICULO)), 
														Integer.parseInt(json_articulo.getString(GETLISTAARTICULOSCATALOGO_CANTIDAD_DISPONIBLE)), 
														new TipoArticulo(Integer.parseInt(json_articulo.getString(GETLISTAARTICULOSCATALOGO_TIPO_ARTICULO_ID)), 
																									json_articulo.getString(GETLISTAARTICULOSCATALOGO_NOMBRE_TIPO_ARTICULO), 
																									""), 
														new Disponibilidad_Articulo(Integer.parseInt(json_articulo.getString(GETLISTAARTICULOSCATALOGO_DISPONIBILIDAD_ID)), 
																									json_articulo.getString(GETLISTAARTICULOSCATALOGO_NOMBRE_DISPONIBILIDAD)),
														Constant.URL_ARTICULO+json_articulo.getString(GETLISTAARTICULOSCATALOGO_ARTICULO_ID)+"/"+
																						json_articulo.getString(GETLISTAARTICULOSCATALOGO_FOTO_ARTICULO)));
							
		
		
		
							
										
						}
						ListaArticuloCache.getInstance().setListaArticulo(listado);
						ListaArticuloCache.getInstance().setFechaCache();
					}
					
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
				catch (Exception ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}
	}

	public String getResult()
	{
		return Result;
	}
	
}


